package com.dabai.addtofavorites.utils;

import android.content.Context;
import android.util.Log;

import com.dabai.addtofavorites.bean.FavData;
import com.dabai.dbutils.utils.DateUtils;
import com.dabai.dbutils.utils.FileUtils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;

public class FavFileUtils {

    public static void delAll(Context context){
        File rootDir = new File(context.getFilesDir()+"/FavFiles/");
        FileUtils.delete(rootDir.getAbsolutePath());
    }

    private FavFileUtils(){}

    public static boolean createFile(Context context,FavData favData){

        File dir = new File(context.getFilesDir()+"/FavFiles/"+ DateUtils.getNowTime("yyyyMMdd"));
        if (!dir.exists()){
            dir.mkdirs();
        }

        File file = new File(dir,DateUtils.getNowTime("hhmmss"));

        if (file.exists()){
            return false;
        }

        return FileUtils.writeText(file.getAbsolutePath(),favData.getContent());
    }

    public static List<FavData> getAllFile(Context context){
        File rootDir = new File(context.getFilesDir()+"/FavFiles/");
        if (!rootDir.exists()){
            rootDir.mkdirs();
        }

        ArrayList<FavData> arrayList = new ArrayList<>();

        File[] rootDirs = rootDir.listFiles();
        Arrays.sort(rootDirs, new CompratorByLastModified(false));

        for (File dirs : rootDirs){
            File[] files = Objects.requireNonNull(dirs.listFiles());
            Arrays.sort(files, new CompratorByLastModified(false));
            for (File file : files){
                FavData favData = new FavData();
                favData.setContent(FileUtils.readText(file.getAbsolutePath()));
                favData.setFile(file);
                arrayList.add(favData);
            }
        }

        return arrayList;
    }


}

/**
 * 文件列表 通过修改时间排序类
 * @author 故事与猫
 *
 *使用方法
 * Arrays.sort(files, new CompratorByLastModified());
 * 构造方法可以传入 布尔值 ,为false就是倒序,默认 正序
 *
 */
class CompratorByLastModified implements Comparator<File> {

    int i = 1;

    public CompratorByLastModified() {
    }

    //传入false 为时间倒序排列
    public CompratorByLastModified(boolean order) {
        if (!order) {
            i = -1;
        }
    }

    public int compare(File f1, File f2) {
        long diff = f1.lastModified() - f2.lastModified();
        if (diff > 0)
            return i;// 倒序正序控制
        else if (diff == 0)
            return 0;
        else
            return -i;// 倒序正序控制
    }

    public boolean equals(Object obj) {
        return true;
    }
}
